using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataManagementTools._Raster._MosaicDataset
{
    /// <summary>
    /// <para>Compute Dirty Area</para>
    /// <para>Identifies areas within a mosaic dataset that have changed since a specified point in time. This is used commonly when a mosaic dataset is updated or synchronized, or when  derived products, such as cache, need to be updated. This tool will enable you to limit such processes to only the areas that have changed.</para>
    /// <para>标识镶嵌数据集中自指定时间点以来发生更改的区域。当更新或同步镶嵌数据集时，或者当需要更新派生产品（如缓存）时，通常使用此方法。此工具将使您能够将此类流程限制为仅已更改的区域。</para>
    /// </summary>    
    [DisplayName("Compute Dirty Area")]
    public class ComputeDirtyArea : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public ComputeDirtyArea()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_mosaic_dataset">
        /// <para>Mosaic Dataset</para>
        /// <para>The mosaic dataset that you want to analyze for changes.</para>
        /// <para>要分析更改的镶嵌数据集。</para>
        /// </param>
        /// <param name="_timestamp">
        /// <para>Start Date and Time</para>
        /// <para><xdoc>
        ///   <para>Compute the areas that have changed since the input time.</para>
        ///   <para>XML time syntax:
        ///   <bulletList>
        ///     <bullet_item>YYYY-MM-DDThh:mm:ss  </bullet_item><para/>
        ///     <bullet_item>YYYY-MM-DDThh:mm:ss.ssssZ  </bullet_item><para/>
        ///     <bullet_item>2002-10-10T12:00:00.ssss-00:00  </bullet_item><para/>
        ///     <bullet_item>2002-10-10T12:00:00+00:00  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>Non-XML time syntax:</para>
        ///   <bulletList>
        ///     <bullet_item>2002/12/25 23:59:58.123</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>计算自输入时间以来已更改的区域。</para>
        /// <para>XML 时间语法：
        ///   <bulletList>
        ///     <bullet_item>YYYY-MM-DDThh：mm：ss</bullet_item><para/>
        ///     <bullet_item>YYYY-MM-DDThh：mm：ss.ssssZ</bullet_item><para/>
        ///     <bullet_item>2002-10-10T12：00：00.ssss-00：00</bullet_item><para/>
        ///     <bullet_item>2002-10-10T12：00：00+00：00</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>非 XML 时间语法：</para>
        ///   <bulletList>
        ///     <bullet_item>2002/12/25 23:59:58.123</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        /// <param name="_out_feature_class">
        /// <para>Output Feature Class</para>
        /// <para>The feature class containing the areas that have changed.</para>
        /// <para>包含已更改区域的要素类。</para>
        /// </param>
        public ComputeDirtyArea(object _in_mosaic_dataset, object _timestamp, object _out_feature_class)
        {
            this._in_mosaic_dataset = _in_mosaic_dataset;
            this._timestamp = _timestamp;
            this._out_feature_class = _out_feature_class;
        }
        public override string ToolboxName => "Data Management Tools";

        public override string ToolName => "Compute Dirty Area";

        public override string CallName => "management.ComputeDirtyArea";

        public override List<string> AcceptEnvironments => ["extent", "scratchWorkspace", "workspace"];

        public override object[] ParameterInfo => [_in_mosaic_dataset, _where_clause, _timestamp, _out_feature_class];

        /// <summary>
        /// <para>Mosaic Dataset</para>
        /// <para>The mosaic dataset that you want to analyze for changes.</para>
        /// <para>要分析更改的镶嵌数据集。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Mosaic Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_mosaic_dataset { get; set; }


        /// <summary>
        /// <para>Query Definition</para>
        /// <para>SQL expression to select specific rasters within the mosaic dataset on which to compute dirty areas.</para>
        /// <para>SQL 表达式，用于在镶嵌数据集中选择用于计算脏区的特定栅格。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Query Definition")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _where_clause { get; set; } = null;


        /// <summary>
        /// <para>Start Date and Time</para>
        /// <para><xdoc>
        ///   <para>Compute the areas that have changed since the input time.</para>
        ///   <para>XML time syntax:
        ///   <bulletList>
        ///     <bullet_item>YYYY-MM-DDThh:mm:ss  </bullet_item><para/>
        ///     <bullet_item>YYYY-MM-DDThh:mm:ss.ssssZ  </bullet_item><para/>
        ///     <bullet_item>2002-10-10T12:00:00.ssss-00:00  </bullet_item><para/>
        ///     <bullet_item>2002-10-10T12:00:00+00:00  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>Non-XML time syntax:</para>
        ///   <bulletList>
        ///     <bullet_item>2002/12/25 23:59:58.123</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>计算自输入时间以来已更改的区域。</para>
        /// <para>XML 时间语法：
        ///   <bulletList>
        ///     <bullet_item>YYYY-MM-DDThh：mm：ss</bullet_item><para/>
        ///     <bullet_item>YYYY-MM-DDThh：mm：ss.ssssZ</bullet_item><para/>
        ///     <bullet_item>2002-10-10T12：00：00.ssss-00：00</bullet_item><para/>
        ///     <bullet_item>2002-10-10T12：00：00+00：00</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>非 XML 时间语法：</para>
        ///   <bulletList>
        ///     <bullet_item>2002/12/25 23:59:58.123</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Start Date and Time")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _timestamp { get; set; }


        /// <summary>
        /// <para>Output Feature Class</para>
        /// <para>The feature class containing the areas that have changed.</para>
        /// <para>包含已更改区域的要素类。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Feature Class")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_feature_class { get; set; }


        public ComputeDirtyArea SetEnv(object extent = null, object scratchWorkspace = null, object workspace = null)
        {
            base.SetEnv(extent: extent, scratchWorkspace: scratchWorkspace, workspace: workspace);
            return this;
        }

    }

}